package org.microframework.cloud.files.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 文件服务配置属性类
 */
@Data
@Component
@ConfigurationProperties(prefix = "file-service")
public class FileServiceProperties {

    /**
     * 允许上传的文件类型
     */
    private List<String> allowedContentTypes = new ArrayList<>();

    /**
     * 文件预览配置
     */
    private Preview preview = new Preview();

    /**
     * 公共访问路径前缀
     */
    private String publicUrlPrefix;

    /**
     * 文件过期时间（默认7天，单位小时）
     */
    private int expiryHours = 168;

    /**
     * 文件预览配置
     */
    @Data
    public static class Preview {
        /**
         * 图片预览配置
         */
        private Image image = new Image();

        /**
         * 文档预览配置
         */
        private Document document = new Document();

        /**
         * 图片预览配置
         */
        @Data
        public static class Image {
            /**
             * 是否启用图片预览
             */
            private boolean enabled = true;

            /**
             * 缩略图配置
             */
            private Thumbnail thumbnail = new Thumbnail();

            /**
             * 缩略图配置
             */
            @Data
            public static class Thumbnail {
                /**
                 * 是否启用缩略图
                 */
                private boolean enabled = true;

                /**
                 * 缩略图宽度
                 */
                private int width = 200;

                /**
                 * 缩略图高度
                 */
                private int height = 200;

                /**
                 * 缩略图质量（0-1）
                 */
                private double quality = 0.85;
            }
        }

        /**
         * 文档预览配置
         */
        @Data
        public static class Document {
            /**
             * 是否启用文档预览
             */
            private boolean enabled = true;
        }
    }
} 